/**
 * Funcion que desactiva la tecla de [Esc], F5 para recargar la pagina, el menu contextual con click derecho 
 * y el backspace para retroceder(solo si se esta en un campo que no es input-text o textarea)
 */
function fnBloqueoF5EscBackspace(){
	/*document.oncontextmenu = function(){
	    return false;
	};*/
	
	if(typeof window.event != 'undefined'){
	    document.onkeydown = function(){
	    	if(event.keyCode == 116){
	    		event.keyCode = 505;
	    	}

	    	if(event.keyCode == 116 || event.keyCode==505 || event.keyCode==27){
	    		return false;
	    	}else{
	    		if(event.keyCode == 8){
		            var tagEvento = event.srcElement.tagName.toLowerCase();
		            if(tagEvento == 'html'){
		                return false;
		            }
		            else if(tagEvento == 'input'){
		            	var tipoAtributoEvento = event.srcElement.getAttribute('type').toLowerCase();
		                switch(tipoAtributoEvento){
		                    case 'text':{return true;break;}
		                    default:{return false;}   
		                }
		                return false;
		            }
		            else{
		                switch(tagEvento){
		                    case 'textarea':{return true;break;}
		                    default:{return false;}    
		                }
		                return false;
		            }
		        }
	    	}
	        
	    };
	}else{
	    document.onkeypress = function(e){
	    	if(e.keyCode == 116){
	    		e.keyCode = 505;
	    	}
	    	if(e.keyCode == 116 || e.keyCode==505 || e.keyCode==27){
	    		return false;
	    	}else{
	    		if(e.keyCode == 8){
		            var tagEvento = e.target.nodeName.toLowerCase();
		            if(tagEvento == 'html'){
		                return false;
		            }
		            else if(tagEvento == 'input'){
		                var tipoAtributoEvento = e.target.getAttribute('type').toLowerCase();
		                switch(tipoAtributoEvento){
		                    case 'text':{return true;break;}
		                    default:{return false;}   
		                }
		                return false;
		            }
		            else{
		                switch(tagEvento){
		                    case 'textarea':{return true;break;}
		                    default:{return false;}     
		                }
		                return false;
		            }
		        }
	    	}
	        
	    };
	}
}

/**
 * Funcion para capturar la excepcion en peticiones ajax de jquery
 * ante caida del servidor y que no se quede la peticion indefinida.
 * Requiere jquery 1.5 o superior para el objeto jqXHR
 */
function fnCapturarErrorJQueryAjax(jqXHR,excepcion){
	var errorPeticion = "";
	if (jqXHR.status === 0) {
		errorPeticion = 'No hay conexi\xf3n con el servidor';
    } else if (jqXHR.status == 404) {
    	errorPeticion = 'No hay respuesta del servidor [404]';
    } else if (jqXHR.status == 500) {
    	errorPeticion = 'Error del servidor [500].';
    } else if (excepcion === 'parsererror') {
    	errorPeticion = 'Error en parseo de json';
    } else if (excepcion === 'timeout') {
    	errorPeticion = 'Se excedi\xf3 el tiempo de espera';
    } else if (excepcion === 'abort') {
    	errorPeticion = 'Petici\xf3n ajax abortada';
    } else {
    	errorPeticion = 'Error desconocido.\n' + jqXHR.responseText;
    }
	
	return errorPeticion;
}